// #include <etcd/Client.hpp>
// #include <fstream>
// #include <string>
// #include <brpc/server.h>
// #include "storage.pb.h"
// #include <log.h>
// #include "etcd_path.h"
// #include "Util.hpp"

// using namespace std;

// // 头像存储目录
// string avatar_dir = "/home/lyt/OnlineJudge/avatars";


// class Storage{
// public:
//     Storage(){}
//     ~Storage(){}
//     // 文件存储子服务类
//     // 1. 生成uuid（之后返回uuid存储到mysql中）
//     // 2. 创建文件
//     // 3. 将数据写入文件中
//     // 4. 返回uuid
//     std::string save_file(const std::string& data){
//         std::string uuid = lyt::Generate_UUID::generate_uuid();

//         std::string save_path = avatar_dir + uuid;
//         std::ofstream ofs(save_path,std::ios::binary);
//         if(!ofs.is_open()) return "";
//         ofs.write(data.data(), data.size());\
//         if(!ofs.good()) return "";
//         return uuid;
//     }
// };

// class FileStorageServiceImpl : public file::FileStorageService{
// public:
//     void SaveFile(::google::protobuf::RpcController* controller,
//                        const ::file::SaveFileRequest* request,
//                        ::file::SaveFileResponse* response,
//                        ::google::protobuf::Closure* done) override{
//         brpc::ClosureGuard done_guard(done);

//         Storage storage;
//         string uuid = storage.save_file(request->file_data());

//         if(uuid.empty()){
//             response->set_success(false);
//             response->set_message("Failed to save file");
//         }else{
//             response->set_success(true);
//             response->set_message("File saved successfully");
//             response->set_file_uuid(uuid);
//         }
//     }
// };

// int main(){
//     brpc::Server server;
//     FileStorageServiceImpl svc;

//     if(server.AddService(&svc,brpc::SERVER_DOESNT_OWN_SERVICE) != 0){
//         errorlog << "Failed to add service: FileStorageService";
//         return -1;
//     }
//     brpc::ServerOptions options;
//     // 永不自动断开
//     options.idle_timeout_sec = -1;
//     if(server.Start(38080,&options) != 0){
//         errorlog << "Failed to start service: FileStorageService";
//         return -1;
//     }

//     // 添加到注册中心
//     etcd::Client client("http://127.0.0.1:2379");
//     try{
//         etcd::Response lease_resp = client.leasegrant(60).get();
//         client.set(lyt::file_path,"127.0.0.1:38080",lease_resp.value().lease());
        
//         // 启动自动续约
//         std::shared_ptr<etcd::KeepAlive> keepalive = client.leasekeepalive(60).get();
//     } catch (const std::exception& e) {
//         errorlog << "Error hanppen in register service : "  << e.what() << endl;
//     }

//     server.RunUntilAskedToQuit();
//     return 0;
// }
